package modelo.persistir;

import java.util.ArrayList;

import modelo.servicios.LineaDeTension;
import modelo.servicios.RedDeAgua;
import modelo.servicios.RedElectrica;
import modelo.servicios.TuberiaDeAgua;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class RedDeAguaPersistir {

	public static JsonArray persistirArray(ArrayList<RedDeAgua> elems)
	{
		Gson gson = new Gson();
		JsonArray jArray=new JsonArray();
		JsonObject jObject=new JsonObject();
		 for(RedDeAgua red:elems){
			  jArray.add( RedDeAguaPersistir.persistir(red.obtenerDatosPersistibles())); 		
			}
		jObject.add("Red De Agua",jArray );
		 return jArray;

	}

	public static JsonObject persistir(ArrayList elems)
	{
		Gson gson = new Gson();
		JsonObject jObject=new JsonObject();
		JsonArray jArray=new JsonArray();
		ArrayList<TuberiaDeAgua>elementos=(ArrayList<TuberiaDeAgua>) elems.get(0);
		for(TuberiaDeAgua tub:elementos){
			jArray.add(TuberiaDeAguaPersistir.persistir(tub.obtenerDatosPersistibles()));			
		}
		jObject.add("Tuberias De Agua",jArray );
		return jObject;
	}

	public static ArrayList cargarArray(String comp)
	{
		
		ArrayList lista=new ArrayList();
		JsonParser parser = new JsonParser();
		JsonArray jArray=parser.parse(comp).getAsJsonArray();
		for(int i=0;i<jArray.size();i++){
			RedDeAgua red=new RedDeAgua(null);
			red.poblar(RedDeAguaPersistir.cargar(jArray.get(i).toString()));
			lista.add(red);	
		}	
		return lista;
	}

	public static ArrayList cargar(String comp)
	{
		ArrayList lista=new ArrayList();
		JsonParser parser = new JsonParser();
		JsonObject jObject=parser.parse(comp).getAsJsonObject();
		JsonArray jArray=parser.parse(jObject.get("Tuberias De Agua").toString()).getAsJsonArray();
		for(int i=0;i<jArray.size();i++){
			TuberiaDeAgua lin=new TuberiaDeAgua();
			lin.poblar(TuberiaDeAguaPersistir.cargar(jArray.get(i).toString()));
			lista.add(lin);			
		}
		return lista;
	}
}